#ifndef WORK_GROUP_H_
#define WORK_GROUP_H_

#include <vector>
class WorkThread;
class NetBus;

/// @brief 连接管理线程组，处理每一个新连接分发到对应的子线程中指定业务
class WorkGroup
{
public:
    /// @brief 构造函数
    /// @param num 指定需要创建线程数量
    WorkGroup(int num);
    /// @brief 初始化函数
    bool Init();
    /// @brief 找到内部运行负载最少的一条线程通知进行客户端连接动作
    /// @param sock 客户端套接字
    void CreateConnection(int sock);
    /// @brief 安全退出方法
    void ExitSafety();
    virtual ~WorkGroup();

private:
    int num_ = 0;
    // 工作线程队列
    std::vector<WorkThread *> group_;
    // 网络总线
    NetBus *net_bus_ = nullptr;
};

#endif